/**
 * 
 */
package cc.rico.redis.utils.lock;

import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * redis 并发锁
 * @author rico 2016年7月5日
 *
 */
public interface RedisLockHandler {
	
	/**
	 * 根据key获取锁
	 * @param key
	 * @return
	 */
	boolean tryLock(String key);
	
	/**
	 * 根据key timeout时间获取锁
	 * @param key
	 * @param timeout
	 * @param unit
	 * @return
	 */
	boolean tryLock(String key, long timeout, TimeUnit unit);
	
	/**
	 * 根据keys timeout时间批量获取锁
	 * @param keys
	 * @param timeout
	 * @param unit
	 * @return
	 */
	boolean tryLock(List<String> keys, long timeout, TimeUnit unit);
	
	/**
	 * 根据key获取锁
	 * @param key
	 */
	void lock(String key);
	
	/**
	 * 释放锁
	 * @param key
	 */
	void unlock(String key);

	/**
	 * 批量释放锁
	 * @param keys
	 */
	void unlock(List<String> keys);
}
